/**
  * @File    :   veml6075.h
  * @Time    :   2020/04/22 22:23:34
  * @Author  :   huenrong
  */

#ifndef __VEML6075_H
#define __VEML6075_H

#include <stdio.h>
#include "../i2c/i2c.h"

#define VEML6075_I2C_ADDR 0x10 // IIC设备地址

// veml6075寄存器地址
#define VEML6075_UV_CONF 0x00
#define VEML6075_UVA_DATA 0x07
#define VEML6075_UVB_DATA 0x09
#define VEML6075_UVCOMP1_DATA 0x0A
#define VEML6075_UVCOMP2_DATA 0x0B
#define VEML6075_DEVICE_ID 0x0C

// 寄存器配置参数
#define VEML6075_CONF_SD 0x01
#define VEML6075_CONF_UV_AF_AUTO 0x00
#define VEML6075_CONF_UV_AF_FORCE 0x02
#define VEML6075_CONF_UV_TRIG_NO 0x00
#define VEML6075_CONF_UV_TRIG_ONCE 0x04
#define VEML6075_CONF_HD 0x08
#define VEML6075_CONF_UV_IT_MASK 0x70
#define VEML6075_CONF_UV_IT_50MS 0x00
#define VEML6075_CONF_UV_IT_100MS 0x10
#define VEML6075_CONF_UV_IT_200MS 0x20
#define VEML6075_CONF_UV_IT_400MS 0x30
#define VEML6075_CONF_UV_IT_800MS 0x40

/**
  * @name   veml6075_read_device_id
  * @brief  veml6075读取设备id
  * @param  read_id: 读取到的设备id
  * @param  fd: 设备文件描述符
  * @retval 成功: 0
  *         失败: -1
  */
int veml6075_read_device_id(uint16_t *read_id, const int fd);

/**
  * @name   veml6075_shutdown
  * @brief  关闭veml6075
  * @param  fd: 设备文件描述符
  * @retval 成功: 0
  *         失败: -1
  */
int veml6075_shutdown(const int fd);

/**
  * @name   veml6075_enable
  * @brief  使能veml6075
  * @param  fd: 设备文件描述符
  * @retval 成功: 0
  *         失败: -1
  */
int veml6075_enable(const int fd);

/**
  * @name   veml6075_trig
  * @brief  触发veml6075
  * @param  fd: 设备文件描述符
  * @retval 成功: 0
  *         失败: -1
  */
int veml6075_trig(const int fd);

/**
  * @name   veml6075_init
  * @brief  veml6075初始化
  * @param  fd: 设备文件描述符
  * @retval 成功: 返回0
            失败: 返回-1
  */
int veml6075_init(const int fd);

/**
  * @name   veml6075_read_uva
  * @brief  veml6075读取uva值
  * @param  read_uva: 读取到的uva值(结果为0.01 uW/cm2)
  * @param  fd: 设备文件描述符
  * @retval 成功: 0
  *         失败: -1
  */
int veml6075_read_uva(uint16_t *read_uva, const int fd);

#endif
